﻿/*
 * Created by SharpDevelop.
 * User: Lousabit
 * Date: 06/10/2011
 * Time: 14:15
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.Ventas
{
	/// <summary>
	/// Description of GUILineaPedidoProducto.
	/// </summary>
		
	public partial class GUILineaPedidoProducto : Form
	{
		private bool huboCambios;
		private BELineaPedidoProducto linea;
		private int id;
		private BEProducto producto;
		private int cantidad;
		private double precioUnitario;
		private BECliente cliente;
		private DateTime fecha;

		public GUILineaPedidoProducto(BELineaPedidoProducto linea, DateTime fecha, BECliente cliente)
		{
			try{
				InitializeComponent();
				
				this.huboCambios = false;
				
				this.fecha = fecha;
				this.cliente = cliente;
				this.linea = linea;
				
				
				if (linea != null){
					producto = linea.Producto;
					cantidad = linea.Cantidad;
					precioUnitario = linea.PrecioUnitario;
					id = linea.Id;
					
					
					productoTB.Text = linea.Producto.Nombre;
					cantidadTB.Text = linea.Cantidad.ToString();
					
					precioUnitarioTB.Text = linea.PrecioUnitario.ToString();
				}
			}catch(Exception ex){
				Utils.MessageError("Error al construir la ventana.", ex);
			}
		}

		public bool HuboCambios{
			get{return this.huboCambios;}
		}
		
		void BuscarProductoBTNClick(object sender, EventArgs e)
		{
			try{
				PetSoft.GestionRecursos.MProductos v = new PetSoft.GestionRecursos.MProductos(2);
				v.ShowDialog(this);
				
				
				List<BEProducto> productos = v.getProductosSeleccionados();
				if (productos == null || productos.Count == 0) return;
				if (productos.Count > 1){
					//MessageBox.Show("Seleccionar sólo un producto.");
				}else{
					producto = productos[0];
					productoTB.Text = producto.Nombre;
					precioUnitarioTB.Text = producto.PrecioVenta.ToString();
				}
			}catch(Exception ex){
				Utils.MessageError("Error al buscar producto.", ex);
			}
			
		}
		
		void GUILineaPedidoProductoLoad(object sender, EventArgs e)
		{
			
		}
		
		public BELineaPedidoProducto Linea{
			get{return this.linea;}
		}
		
		void AceptarBTNClick(object sender, EventArgs e)
		{

			try{
				if (linea == null) id = -1;
				
				try{
					cantidad = int.Parse(cantidadTB.Text);
				}
				catch(Exception ex){
					Utils.MessageAviso("La cantidad no es válida.");
					return;
				}
				
				try{
					precioUnitario = Double.Parse(precioUnitarioTB.Text);// - Decimal.Parse(descuentoTB.Text);
				}
				catch(Exception ex){
					Utils.MessageAviso("El precio unitario no es válido.", ex);
					return;
				}
				
				
				if (producto == null){
					Utils.MessageAviso("Seleccionar un producto.");
					return;
				}else{
					linea = new BELineaPedidoProducto(cantidad, precioUnitario, producto);
					linea.Id = id;
				}
				
				this.huboCambios = true;
				
				this.Close();
				
			}catch(Exception ex){
				Utils.MessageError("Error al guardar cambios.");
			}
		}

		void CantidadTBTextChanged(object sender, EventArgs e)
		{
			
		}
		
		void CantidadTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.SoloNumerosTB(sender, e);
		}
	}
}
